package com.huike.report.service;

import com.github.pagehelper.Page;
import com.huike.common.core.page.TableDataInfo;
import com.huike.report.domain.vo.*;
import com.huike.report.dto.ContractStatisticsListDTO;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * @Description ReportService
 * @Author bin
 * @Date 2023-10-16
 */
public interface ReportService {

    /**
     * 处理客户统计新增客户数报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVo contractStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);


    /**
     * 处理销售统计归属部门明细列表
     * @param beginCreateTime
     * @param endCreateTime
     * @param pageNum
     * @param pageSize
     * @return
     */
    DeptStatisticsListVO deptStatisticsList(LocalDate beginCreateTime, LocalDate endCreateTime, Integer pageNum, Integer pageSize);


    /**
     * 处理客户统计明细列表
     * @param contractStatisticsListDTO
     * @return
     */
    ContractStatisticsListVO contractStatisticsList(ContractStatisticsListDTO contractStatisticsListDTO);

    /**
     * 处理销售统计报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVo salesStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);

    /**
     * 渠道统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String,Object>> chanelStatistics(String beginCreateTime, String endCreateTime);

    List<Map<String,Object>> activityStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计归属渠道明细列表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    ChannelStatisticsListVO channelStatisticsList(LocalDate beginCreateTime, LocalDate endCreateTime);


    /**
     * 处理销售统计归属人报表
     * @param beginCreateTime
     * @param endCreateTime
     * @param pageNum
     * @param pageSize
     * @return
     */
    TableDataInfo ownerShipStatisticsList(LocalDate beginCreateTime, LocalDate endCreateTime, Integer pageNum, Integer pageSize);

    /**
     * 渠道统计
     * @param activityPageBeanDto
     * @return
     */
    Page<ActivityStatisticsVo> getActivityStatisticsList(ActivityPageBeanDto activityPageBeanDto);
}
